package com.ruoyi.personnel.service.impl;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.personnel.domain.Job;
import com.ruoyi.personnel.domain.Personnel;
import com.ruoyi.personnel.domain.PersonnelExcel;
import com.ruoyi.personnel.mapper.JobMapper;
import com.ruoyi.personnel.mapper.PersonnelMapper;
import com.ruoyi.personnel.service.PersonnelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

@Service
public class PersonnelServiceImpl implements PersonnelService {

    @Autowired
    private PersonnelMapper personnelMapper;

    @Autowired
    private JobMapper jobMapper;

    @Override
    public List<Personnel> queryByPage(Personnel personnel) {
        return personnelMapper.queryByPage(personnel);
    }

    @Override
    public Personnel getPersonnelById(int id) {
        return personnelMapper.getPersonnelById(id);
    }

    @Override
    public Personnel getPersonnelByNo(String no) {
        return personnelMapper.getPersonnelByNo(no);
    }

    @Override
    public int insert(Personnel personnel) {
//        int count = personnelMapper.getCountByJobNo(0, personnel.getJobNo());
//        if(count > 0){
//            throw new ServiceException(String.format("工号已存在", ""));
//        }
        int count2 = personnelMapper.getCountByNo(0, personnel.getNo());
        if(count2 > 0){
            throw new ServiceException(String.format("编号已存在", ""));
        }
        return personnelMapper.insert(personnel);
    }

    @Override
    public int update(Personnel personnel) {
//        int count = personnelMapper.getCountByJobNo(personnel.getId(), personnel.getJobNo());
//        if(count > 0){
//            throw new ServiceException(String.format("工号已存在", ""));
//        }
        int count2 = personnelMapper.getCountByNo(personnel.getId(), personnel.getNo());
        if(count2 > 0){
            throw new ServiceException(String.format("编号已存在", ""));
        }
        return personnelMapper.update(personnel);
    }

    @Override
    public int delByIds(Long[] ids) {
        return personnelMapper.delByIds(ids);
    }

    @Override
    public void export(HttpServletResponse response, Personnel personnel) {
        List<Personnel> list = personnelMapper.getListExcel(personnel);
        List<PersonnelExcel> listExcel = new ArrayList<PersonnelExcel>();
        for (int i = 0;i < list.size();i++){
            PersonnelExcel personnelExcel = new PersonnelExcel();
            Personnel resultPersonnel = list.get(i);
            personnelExcel.setName(resultPersonnel.getName());
            personnelExcel.setAvatarUrl(resultPersonnel.getAvatarUrl());
            personnelExcel.setJobNo(resultPersonnel.getJobNo());
            personnelExcel.setNativePlace(resultPersonnel.getNativePlace());
            personnelExcel.setProcessRemark(resultPersonnel.getProcessRemark());
            personnelExcel.setRemark(resultPersonnel.getRemark());
            personnelExcel.setNo(resultPersonnel.getNo());
            personnelExcel.setSort(String.valueOf(resultPersonnel.getSort()));
            personnelExcel.setYearlySalary(Double.toString(resultPersonnel.getYearlySalary()));
            personnelExcel.setAttribute(String.valueOf(resultPersonnel.getAttribute()));
            listExcel.add(personnelExcel);
        }
        ExcelUtil<PersonnelExcel> util = new ExcelUtil<PersonnelExcel>(PersonnelExcel.class);
        util.exportExcel(response, listExcel, "员工列表", "员工列表");
    }

    @Override
    public int importData(MultipartFile file) throws Exception {
        ExcelUtil<PersonnelExcel> util = new ExcelUtil<PersonnelExcel>(PersonnelExcel.class);
        List<PersonnelExcel> personnelExcellList = util.importExcel(file.getInputStream());
        if(personnelExcellList != null){
            for(int i = 0;i < personnelExcellList.size();i++){
                Personnel personnel = new Personnel();
                PersonnelExcel personnelExcel = personnelExcellList.get(i);
                Job job = jobMapper.getJobByName(personnelExcel.getJobStr());
                if(job != null){
                    personnel.setProcessRemark(job.getProcessRemark());
                    personnel.setRemark(job.getRemark());
                }
                int jobNoCount = personnelMapper.getCountByJobNo(0, personnelExcel.getJobNo());
                if(jobNoCount > 0){
//                    continue;
//                    throw new ServiceException(String.format(personnelExcel.getJobNo() + "工号已存在", ""));
                }
                int noCount = personnelMapper.getCountByNo(0, personnelExcel.getNo());
                if(noCount > 0){
                    continue;
//                    throw new ServiceException(String.format(personnelExcel.getNo() + "编号已存在", ""));
                }
                if(personnelExcel.getSort() != "" && !personnelExcel.getSort().equals("")){
                    personnel.setSort(Integer.parseInt(personnelExcel.getSort()));
                }
                personnel.setName(personnelExcel.getName());
                personnel.setJobNo(personnelExcel.getJobNo());
                personnel.setNativePlace(personnelExcel.getNativePlace());
                if(personnelExcel.getYearlySalary() != "" && !personnelExcel.getYearlySalary().equals("")){
                    personnel.setYearlySalary(Double.parseDouble(personnelExcel.getYearlySalary()));
                }
                personnel.setNo(personnelExcel.getNo());
                personnel.setAvatarUrl(personnelExcel.getAvatarUrl());
                personnel.setRemark(personnelExcel.getRemark());
                personnel.setProcessRemark(personnelExcel.getProcessRemark());
                if(personnelExcel.getAttribute() != null && personnelExcel.getAttribute() != "" && !personnelExcel.getAttribute().equals("")){
                    personnel.setAttribute(Integer.parseInt(personnelExcel.getAttribute()));
                }
                if(personnelExcel.getJobStr() != null && personnelExcel.getJobStr() != "" && !personnelExcel.getJobStr().equals("")){
                    Integer jobId = jobMapper.getIdByName(personnelExcel.getJobStr());
                    if(jobId != null && jobId != 0){
                        personnel.setJobId(jobId);
                    }
                }
                personnelMapper.insert(personnel);
//                if(personnelExcel.getJobNo() != null && personnelExcel.getJobNo() != "" && !personnelExcel.getJobNo().equals("") && personnelExcel.getNo() != null && personnelExcel.getJobNo() != "" && !personnelExcel.getJobNo().equals("")){
//                    int jobNoCount = personnelMapper.getCountByJobNo(0, personnelExcel.getJobNo());
//                    if(jobNoCount > 0){
//                        throw new ServiceException(String.format(personnelExcel.getJobNo() + "工号已存在", ""));
//                    }
//                    int noCount = personnelMapper.getCountByNo(0, personnelExcel.getNo());
//                    if(noCount > 0){
//                        throw new ServiceException(String.format(personnelExcel.getNo() + "编号已存在", ""));
//                    }
//                    if(personnelExcel.getSort() != "" && !personnelExcel.getSort().equals("")){
//                        personnel.setSort(Integer.parseInt(personnelExcel.getSort()));
//                    }
//                    personnel.setName(personnelExcel.getName());
//                    personnel.setJobNo(personnelExcel.getJobNo());
//                    personnel.setNativePlace(personnelExcel.getNativePlace());
//                    if(personnelExcel.getYearlySalary() != "" && !personnelExcel.getYearlySalary().equals("")){
//                        personnel.setYearlySalary(Double.parseDouble(personnelExcel.getYearlySalary()));
//                    }
//                    personnel.setNo(personnelExcel.getNo());
//                    personnel.setAvatarUrl(personnelExcel.getAvatarUrl());
//                    personnel.setRemark(personnelExcel.getRemark());
//                    personnel.setProcessRemark(personnelExcel.getRemark());
//                    if(personnelExcel.getAttribute() != null && personnelExcel.getAttribute() != "" && !personnelExcel.getAttribute().equals("")){
//                        personnel.setAttribute(Integer.parseInt(personnelExcel.getAttribute()));
//                    }
//                    if(personnelExcel.getJobStr() != null && personnelExcel.getJobStr() != "" && !personnelExcel.getJobStr().equals("")){
//                        Integer jobId = jobMapper.getIdByName(personnelExcel.getJobStr());
//                        if(jobId != null && jobId != 0){
//                            personnel.setJobId(jobId);
//                        }
//                    }
//                    personnelMapper.insert(personnel);
//                }else{
//                    if(personnelExcel.getJobNo() == null || personnelExcel.getJobNo() == "" || personnelExcel.getJobNo().equals("")){
//                        throw new ServiceException(String.format(personnelExcel.getName() + "请填写工号", ""));
//                    }
//                    if(personnelExcel.getNo() == null || personnelExcel.getNo() == "" || personnelExcel.getNo().equals("")){
//                        throw new ServiceException(String.format(personnelExcel.getName() + "请填写编号", ""));
//                    }
//                }
            }
        }
        return 0;
    }
}
